/*
 * Mediatek's PMIC MT6392 device tree source
 * Copyright (c) 2016 MediaTek Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#include <dt-bindings/pinctrl/mt6392-pinfunc.h>

/ {
	mt6392_audio_codec: mt6392_audio_codec {
		compatible = "mediatek,mt6392-codec";
		mediatek,pwrap-regmap = <&pwrap>;
		status = "disabled";
	};
};

&pwrap {
	status = "okay";

	pmic: mt6392 {
		compatible = "mediatek,mt6392";

		mediatek,system-power-controller;

		mt6392keys: mt6392keys {
			compatible = "mediatek,mt6392-keys";
			mediatek,pwrkey-code = <116>;
			mediatek,homekey-code = <114>;
			mediatek,long-press-mode = <1>;
			mediatek,long-press-duration = <0>;
		};

		mt6392pmic: mt6392pmic {
			compatible = "mediatek,mt6392-pmic";
		};

		mt6392regulator: mt6392regulator {
			compatible = "mediatek,mt6392-regulator";

			mt6392_vproc_reg: buck_vproc {
				regulator-name = "vproc";
				regulator-min-microvolt = < 700000>;
				regulator-max-microvolt = <1350000>;
				regulator-ramp-delay = <12500>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6392_vsys_reg: buck_vsys {
				regulator-name = "vsys";
				regulator-min-microvolt = <1400000>;
				regulator-max-microvolt = <2987500>;
				regulator-ramp-delay = <25000>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6392_vcore_reg: buck_vcore {
				regulator-name = "vcore";
				regulator-min-microvolt = < 700000>;
				regulator-max-microvolt = <1350000>;
				regulator-ramp-delay = <12500>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6392_vxo22_reg: ldo_vxo22 {
				regulator-name = "vxo22";
				regulator-min-microvolt = <2200000>;
				regulator-max-microvolt = <2200000>;
				regulator-enable-ramp-delay = <110>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6392_vaud22_reg: ldo_vaud22 {
				regulator-name = "vaud22";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <2200000>;
				regulator-enable-ramp-delay = <264>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6392_vcama_reg: ldo_vcama {
				regulator-name = "vcama";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-enable-ramp-delay = <264>;
			};

			mt6392_vaud28_reg: ldo_vaud28 {
				regulator-name = "vaud28";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-enable-ramp-delay = <264>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6392_vadc18_reg: ldo_vadc18 {
				regulator-name = "vadc18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-enable-ramp-delay = <264>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6392_vcn35_reg: ldo_vcn35 {
				regulator-name = "vcn35";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3600000>;
				regulator-enable-ramp-delay = <264>;
			};

			mt6392_vio28_reg: ldo_vio28 {
				regulator-name = "vio28";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-enable-ramp-delay = <264>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6392_vusb_reg: ldo_vusb {
				regulator-name = "vusb";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <264>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6392_vmc_reg: ldo_vmc {
				regulator-name = "vmc";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <264>;
				regulator-boot-on;
			};

			mt6392_vmch_reg: ldo_vmch {
				regulator-name = "vmch";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <264>;
				regulator-boot-on;
			};

			mt6392_vemc3v3_reg: ldo_vemc3v3 {
				regulator-name = "vemc3v3";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <264>;
				regulator-boot-on;
			};

			mt6392_vgp1_reg: ldo_vgp1 {
				regulator-name = "vgp1";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <264>;
			};

			mt6392_vgp2_reg: ldo_vgp2 {
				regulator-name = "vgp2";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <264>;
			};

			mt6392_vcn18_reg: ldo_vcn18 {
				regulator-name = "vcn18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-enable-ramp-delay = <264>;
			};

			mt6392_vcamaf_reg: ldo_vcamaf {
				regulator-name = "vcamaf";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-enable-ramp-delay = <264>;
			};

			mt6392_vm_reg: ldo_vm {
				regulator-name = "vm";
				regulator-min-microvolt = <1240000>;
				regulator-max-microvolt = <1390000>;
				regulator-enable-ramp-delay = <264>;
			};

			mt6392_vio18_reg: ldo_vio18 {
				regulator-name = "vio18";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-enable-ramp-delay = <264>;
				regulator-always-on;
				regulator-boot-on;
			};

			mt6392_vcamd_reg: ldo_vcamd {
				regulator-name = "vcamd";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1800000>;
				regulator-enable-ramp-delay = <264>;
			};

			mt6392_vcamio_reg: ldo_vcamio {
				regulator-name = "vcamio";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-enable-ramp-delay = <264>;
			};

			mt6392_vm25_reg: ldo_vm25 {
				regulator-name = "vm25";
				regulator-min-microvolt = <2500000>;
				regulator-max-microvolt = <2500000>;
				regulator-enable-ramp-delay = <264>;
			};

			mt6392_vefuse_reg: ldo_vefuse {
				regulator-name = "vefuse";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <2000000>;
				regulator-enable-ramp-delay = <264>;
			};
		};

		pio6392: pinctrl@c000 {
			compatible = "mediatek,mt6392-pinctrl";
			pins-are-numbered;
			gpio-controller;
			#gpio-cells = <2>;
		};

		typec: typec {
			compatible = "mediatek,mt6392-typec";
			status = "disabled";
		};
	};
};
